CloudFrontのオリジンに設定できるタイムアウトが理解できていなかったので絵にしてみた
タイムアウトの違いを理解したい
こんにちは!AWS事業本部のおつまみです。
CloudFrontのオリジンを設定する際、[追加設定]には以下の項目があります。
全てタイムアウトですが、各々どんな違いがあるのかいまいち理解できていませんでした。
そこで今回は絵にして理解してみたいと思います!
接続タイムアウト
CloudFrontがオリジンへのリクエストで接続を確立しようとするときに待機する秒数です。
②オリジンへリクエストにかかる時間のみが関係します。
デフォルトのタイムアウトは 10 秒、1 ~ 10の秒の範囲で設定可能です。
設定したタイムアウト値以内に接続を確立できない場合は最大3回まで接続を試行します。
全ての試行が失敗してしまった場合は、以下のような挙動になります。
- セカンドオリジンが設定されていない場合
- CloudFront はクライアントにエラーレスポンスを返します。
- セカンドオリジンが設定されている場合
- セカンドオリジンへの接続を行います。
- セカンドオリジンへの接続試行も失敗した場合は、CloudFront はクライアントにエラーレスポンスを返します。
レスポンスタイムアウト
CloudFrontがリクエストをオリジンに転送してからレスポンスを受け取るまでに待機する秒数です。
②オリジンへリクエストと③オリジンからのレスポンスにかかる時間が関係します。
カスタムオリジンのみに適用される設定値です。S3オリジンには適用されません。
デフォルトのタイムアウトは 30 秒、1 ~ 60の秒の範囲で設定可能です。60秒以上の設定が必要な場合は上限緩和申請ができます。
しかしクライアント側でHTTP504ステータスコードエラーが発生し、タイムアウト値を引き上げる必要がある場合は、変更前に他の回避方法も検討して下さい。
以下のAWS公式のトラブルシューティング方法が参考になります。
キープアライブタイムアウト
CloudFrontがレスポンスの最後のパケットを取得した後にカスタムオリジンへの接続を維持する秒数です。
ちなみにキープアライブは通信先の相手が活きているか確認する仕組みのことです。
③オリジンからのレスポンス〜次の②オリジンへリクエストにかかる時間が関係します。
カスタムオリジンのみに適用される設定値です。S3オリジンには適用されません。
デフォルトのタイムアウトは 5秒、1 ~ 60の秒の範囲で設定可能です。
キープアライブタイムアウトを増やすと、TCP 接続の再構築に必要な時間と後続のリクエストに対する別の TLS ハンドシェイクの実行に必要な時間を節約できます。そのため、オリジンへの通信効率が上がります。
ただし、TCPコネクションを確立し続けることで負荷がかかってしまいます。
そのためタイムアウト値を増やす場合は慎重に設定しましょう。
最後に
今回はCloudFrontのオリジン設定にあるタイムアウトについてまとめてみました。
絵にすると理解度があがりますね。
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!